A “virtual machine” is a virtualized copy of a computer system, with virtual hardware (including disk controller, network card, etc.). Frequently, running within the virtual machine is a full operating system. These virtual machines run on a physical host server known as a hypervisor. The hypervisor abstracts the physical hardware of the host server so that the virtual machine sees virtual hardware regardless of what the underlying hardware includes. The storage volumes that appear within the virtual machine are virtualized storage volumes provided by the hypervisor. The storage volumes visible from within the virtual machine can come from multiple sources.
Virtual machines are often started and stopped in response to a needed workload. Thus, during some periods, a minimum number of virtual machines are required, whereas other periods, a maximum number of virtual machines are required. These changes in the needs for virtual machines can create power inefficiencies in the real computer systems that operate the virtual machines.
For virtual desktops provided by a connection broker, such as VMware View or Citrix XenDesktop, one user will be assigned an available virtual machine at logon time out of a desktop pool. The number of users logging into virtual desktops (and therefore the number of virtual machines in use) follows typical work patterns—high demand starting in the morning and continuing through the day until the evening when workers end their workday.
Virtual desktop brokering products, such as Citrix XenDesktop, will automatically start new virtual machines as the reserve of virtual machines available for future users falls below a threshold. However, these products are designed to distribute the load of new virtual machines equally across all the hypervisors. This can result in an inefficient distribution where 4 hypervisors (each capable of serving 100 virtual desktops) end up with only 25 virtual desktops.